# @Time :  
# @Author : Fioman 
# @Phone : 13149920693
"""
def imdecode(buf, flags):
功能,从内存的缓存区中读取图像,如果缓存区太小或者是包含无效数据,这个函数返回None.配合np.fromfile()
可以加载中文目录的图片

def imencode(ext, img, params=None):
将图像编码为特定格式并存储到内存缓存区中.
ext: 指定编码格式
img: 要存储的图像array
params: 图像质量参数,一般是[操作类型,操作值],比如[cv2.IMWRITE_PNG_COMPRESSION, 9],压缩9级
返回值: -> retVal,buffer  retVal是否成功, buffer,包含编码图像数据的缓存区

def fromfile(file, dtype=None, count=-1, sep='', offset=0, *args, **kwargs):
功能: 从二进制文件读取数据并创建Numpy数组
file: 文件路径
dtype: 数据类型,一般是np.uint8,这个一定要提供

def tofile(self, fid, sep="", format="%s"):
功能: 将Numpy数组中的数据写入到二进制文件
"""
import os.path

import cv2
import numpy as np

from settings import IMAGE_PATH

chinesePath = os.path.join(IMAGE_PATH, "中文目录", "lena.jpg")
imageArray = np.fromfile(chinesePath, np.uint8)
image = cv2.imdecode(imageArray, cv2.IMREAD_COLOR)
cv2.imshow("Image", image)
cv2.waitKey(0)

# encode()
result, buffer = cv2.imencode(".jpg", image)
chinesePath02 = os.path.join(IMAGE_PATH, "中文目录", "new.jpg")
if result:
    buffer.tofile(chinesePath02)
